<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="../js/vue.js"></script>
</head>
<body>
  <div id="test">
    <Msg></Msg>
  </div>

  <script>
    const Msg = Vue.extend({
      data () {
        return {
          obj: {
            name: 'tom'
          }
        }
      },
      template: `
        <div>
          <p>{{obj}}</p>
          <button @click='add'>添加一个新属性</button>
        </div>
      `,
      methods: {
        add () {
          console.log(this)
          console.log(this.__proto__.__proto__===Vue.prototype) // true
          this.$set(this.obj, 'age', 12)
        }
      },

      mounted () {
        console.log('Msg', this)  // 组件对象
      }
    })
    console.log(Msg)

    const vm = new Vue({
      el: '#test',
      data: {

      },

      mounted () {
        console.log(this) // vm
      },
      // 注册组件: 局部注册
      components: {
        Msg
      }
    })

    console.log(vm)
    /* 
    Vue与VueComponent的关系?
     VueComponent.prototype = Object.create(Vue.prototype);
     组件对象的原型对象的原型对象是Vue的原型对象
     可以通过组件对象this直接访问Vue原型对象上的方法和属性
    */


  </script>
</body>
</html>